import cython
from numpy cimport ndarray
from v3dsolver.fluid_elements.fluid_elems cimport Saffman,FreeStream
from v3dsolver.tree_manager.vel_calculator cimport VelCalculator

cdef class AdvectionManager:
    cdef public list elems
    cdef public double dt
    cdef public FreeStream freestream
    cdef public int npmax
    cdef public int npseudo
    cdef public double blob_rad
    cdef public str vel_method

    @cython.locals(elem=Saffman,domain=list,v=VelCalculator)
    cdef compute_vels(self)

    @cython.locals(elem=Saffman)
    cdef integrate_Euler(self,double dt)

    cpdef move_Euler(self)
    
    @cython.locals(y0=list,k1=list,effect_elems=list,i=int,elem=Saffman,k2=list)
    cpdef move_RK2(self)
